package com.xgf.common.xgfcommon.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * String 公共类
 * @ClassName:  StringUtils   
 * @Description:TODO  
 * @author: xgf
 * @date:   2020年2月7日 上午8:13:31
 */
public class StringUtils {
	
	/**
	 * String 是否不为空 
	* @Title: isNotEmpty
	* @Description: TODO
	* @param @param content 参数String
	* @param @return 
	* @return Boolean true不为空 false 为空
	* @throws
	 */
	public static Boolean isNotEmpty(String content) {
		return content != null && content.trim().length() > 0;
	}
	
	/**
	 * String 是否为空 
	* @Title: isEmpty
	* @Description: TODO
	* @param @param content 参数String
	* @param @return 
	* @return Boolean true 为空 false 反之
	* @throws
	 */
	public static Boolean isEmpty(String content) {
		return content == null || content.trim().length() <= 0;
	}

	
	/**
	 * 读取字符串第i次出现特定符号的位置
	 * @param string
	 * @param i
	 * @return
	 */
	public static int getCharacterPosition(String string ,int i,String character){
	    //这里是获取"/"符号的位置
	   // Matcher slashMatcher = Pattern.compile("/").matcher(string);
		 Matcher slashMatcher = Pattern.compile(character).matcher(string);
	    int mIdx = 0;
	    while(slashMatcher.find()) {
	       mIdx++;
	       //当"/"符号第三次出现的位置
	       if(mIdx == i){
	          break;
	       }
	    }
	    return slashMatcher.start();
	 }
	
	/**
	 * 如果无逗号 就取list里面只有一个元素 如果有逗号 就返回一个list<String>
	* @Title: splitByComma
	* @Description: TODO
	* @param  
	* @return void
	* @throws
	 */
	public static  List<String> splitByComma(String content) {
		return contentBysplit(content, ",");
	}
	
	
	/**
	 * 如果无分隔符 就取list里面只有一个元素 如果有分隔符 就返回一个list<String>
	* @Title: contentBysplit
	* @Description: TODO
	* @param  
	* @return void
	* @throws
	 */
	public static List<String> contentBysplit(String content, String split) {
		List<String> result = new ArrayList<>();
		if(isEmpty(content)) {
			return result;
		}
		// 如果有逗号 就返回一个list<String>
		if(content.contains(split)) {
			String[] split2 = content.split(split);
			for (String string : split2) {
				result.add(string);
			}
			return result;
		}
		// 如果无逗号 但是有值 就取list里面只有一个元素 
		result.add(content);
		return result;
	}
	
	
    /**
            *  参数非空校验
     * @param value String类型参数/参数组
     * @return 非空返回true
     */
    public static boolean validate(String... value) {
        int count = 0;
        for(int i=0;i<value.length;i++){
            if(value[i] == null || value[i].isEmpty()){
                return false;
            }
            count++;
        }
        if(count == value.length){
            return true;
        }
        return false;
    }
    
    
    
    public static String valueOf(Object content) {
    	String valueOf = String.valueOf(content);
    	if(valueOf == null || "null".equals(valueOf)) {
    		return null;
    	}
    	return valueOf;
    }
}
